iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0

今天來實作提交交易到full node,但這個Address是我們建立的,裡面並沒有EGLD,所以需要從外面的錢包轉帳進來,我們使用的Address是

erd1aym5zlt5dhmjr4gqkcyuswpejvr4aam06mns0gmfc4unehxw337sykx33c

前面我們介紹的Elrond wallet轉帳到我們的Address中,
https://ithelp.ithome.com.tw/upload/images/20221011/20140358AYXJr4qKPm.png
交易紀錄,可以看到查詢鏈上資料,我們的address有10顆EGLD跟nonce為0,有這些資料就可以開始設定我們的request了,
先新增接收sent request回傳的response的struct,
internal/model/transactionRes.go

package model

type TransactionRes struct {
	data  any
	error string
	code  string
}

然後新增post函式
internal/utils.go

func HttpPost(url string, request any, model any) {
	body, _ := json.Marshal(request)
	fmt.Println(request)
	resp, err := http.Post(url, "application/json", bytes.NewBuffer(body))
	if err != nil {
		fmt.Println(err)
		panic(err)
	}
	fmt.Println(resp)
	defer func(Body io.ReadCloser) {
		err := Body.Close()
		if err != nil {

		}
	}(resp.Body)
	decoder := json.NewDecoder(resp.Body)
	err = decoder.Decode(&model)
	if err != nil {
		fmt.Println(err)
		return
	}
}

再來就是新增執行函式
internal/wallet/walletUtils.go
在import要新增
"github.com/ElrondNetwork/elrond-sdk/erdgo/data"

func SentTransaction(sender, receiver, value string, nonce, gasPrice, gasLimit int, pemPrivateKey []byte) {
	transaction := data.Transaction{
		Nonce:    uint64(nonce),
		Value:    value,
		SndAddr:  sender,
		RcvAddr:  receiver,
		Data:     []byte(""),
		GasPrice: uint64(gasPrice),
		GasLimit: uint64(gasLimit),
		ChainID:  "T",
		Version:  1,
	}
	err := erdgo.SignTransaction(&transaction, pemPrivateKey)
	if err != nil {
		return
	}
	fmt.Printf("Signature: %s", transaction.Signature)

	var transactionRes model.TransactionRes
	utils.HttpPost(url+"/transaction/send", transaction, &transactionRes)
	fmt.Println(transactionRes)
}

然後呼叫函式測試一下

walletUtils.SentTransaction(address,
		"erd1dtfqa76nzjgy0wcg859ls4rh5fet9pnqnmh0337sy3usjmuplmksjhs5l2",
		"1000000000000000000",
		0,
		1000000000,
		50000,
		pemPrivateKey,
	)

https://ithelp.ithome.com.tw/upload/images/20221011/20140358rB7uFsjaDc.png
我們可以看到回傳的http state是201,我們在查詢一下Address餘額,
https://ithelp.ithome.com.tw/upload/images/20221011/20140358ipuzWWCFUg.png
可以看到餘額較上一張圖片少了一顆多,多得是消耗的手續費,然後也看到Nonce加一了,剛剛交易的內容
這樣就差不多完成所有的函式了,再來要開始使用Gin設計API介面了。


上一篇
[Day 26] Elrond full node (十五)
下一篇
[Day 28] Elrond full node (十七)
系列文
如何打造屬於自己的區塊鏈錢包服務31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言